#ifndef __SERVER_H__
#define __SERVER_H__

#include <iostream>
#include <string>
#include <cstring>
#include <unistd.h>
#include <arpa/inet.h>
#include <sys/socket.h>

using namespace std;

class TCPServer
{
private:
    int port;      // 服务器监听的端口号
    int server_fd; // 服务器套接字文件描述符
    int client_fd; // 客户端套接字文件描述符
public:
    // 构造函数，初始化端口号和套接字描述符
    TCPServer(int port);

    // 析构函数，关闭服务器以释放资源
    ~TCPServer();

    // 启动服务器，创建套接字并绑定和监听客户端连接
    bool start();

    // 接受客户端连接
    bool acceptclient();

    // 接收客户端发送的数据
    bool recvdata(string &data);

    // 发送数据给客户端
    bool senddata(const string &data);

    // 重载 << 操作符，向客户端发送数据
    TCPServer &operator<<(const string &data);

    // 重载 >> 操作符，接收客户端发送的数据
    TCPServer &operator>>(string &data);

    // 关闭服务器
    void closeserver();
};

#endif